﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using DataTransferObjects;
using Business;
using GraphicUserInterface.MainForm;

namespace GraphicUserInterface.NewAccount
{
    public partial class frChangeAccount : Form
    {
        int iUserID;
        public AccountInforDTO accountInfor = new AccountInforDTO();

        //Gửi trả thông tin account về cho form nào muốn sử dụng
        public delegate void transmitAccountInfor(AccountInforDTO accountInfor);

        public frChangeAccount(int iUserID)
        {
            InitializeComponent();
            this.iUserID = iUserID;
        }


        //Kiểm tra thông tin
        private bool IsEnoughInfor()
        {
            bool bIsEnough = true;
            string strMessages = "";
            int iPhone = 0;


            //Kiểm tra thông tin họ tên
            tbName.Text.Trim();
            if (tbName.Text.Length == 0)
            {
                bIsEnough = false;
                strMessages = strMessages + "Vui lòng nhập họ tên người dùng.\n";
            }

            //Kiểm tra thông tin đt            
            tbPhone.Text.Trim();
            if (tbPhone.Text.Length != 0)
            {
                try
                {
                    iPhone = int.Parse(tbPhone.Text);
                }
                catch (System.Exception ex)
                {
                    bIsEnough = false;
                    strMessages = strMessages + "Vui lòng kiểm tra lại số điện thoại bạn đã nhập.\n";
                }
            }
            else
            {
                bIsEnough = false;
                strMessages = strMessages + "Vui lòng nhập số điện thoại.\n";
            }

            //Kiểm tra thông tin địa chỉ
            tbAddress.Text.Trim();
            if (tbAddress.Text.Length == 0)
            {
                bIsEnough = false;
                strMessages = strMessages + "Vui lòng nhập thông tin địa chỉ.\n";
            }

            if (strMessages.Length != 0)
                MessageBox.Show(strMessages);

            return bIsEnough;
        }

        private void btChangeAccountInfor_Click(object sender, EventArgs e)
        {
            //Tạo thông tin tài khoản, lưu dữ liệu, nhớ kiểm tra các diều kiện.
            if (MessageBox.Show("Bạn chắc chắn về thông tin đã thay đổi?", "?", MessageBoxButtons.YesNo) == DialogResult.Yes)
            {
                if (!IsEnoughInfor())
                {
                    return;
                }

                this.accountInfor.strName = tbName.Text;
                this.accountInfor.birthday = dtBirthday.Value;
                this.accountInfor.phoneNumber = tbPhone.Text;
                this.accountInfor.address = tbAddress.Text;

                //Chuyển dữ liệu người dùng được thay đổi xuống tầng business
                AccountBUS.ChangeAccInfor(accountInfor);


                //Trả thông tin cập nhật về cho main form
                frMainForm frm = new frMainForm(accountInfor.email);
                transmitAccountInfor sendAccInfor = new transmitAccountInfor(frm.receiveAccInfor);
                sendAccInfor(this.accountInfor);



                if (MessageBox.Show("Bạn có muốn thay đổi passphrase hoặc cặp khóa không?", "?", MessageBoxButtons.YesNo) == DialogResult.No)
                {
                    this.Owner.Show();
                    this.Close();
                }
                else
                {
                    //Chuyển đến form tạo khóa, form tạo khóa lưu dữ liệu về khóa
                    frCreateKey FormCreateKey = new frCreateKey(false, this.accountInfor.iUserID);
                    this.AddOwnedForm(FormCreateKey);
                    FormCreateKey.Owner = this;
                    FormCreateKey.Show();
                    this.Hide();
                }
            }            
        }

        private void frChangeAccount_FormClosed(object sender, FormClosedEventArgs e)
        {
            this.Owner.Show();
        }

        private void frChangeAccount_Load(object sender, EventArgs e)
        {
            this.accountInfor = AccountBUS.getAccInforFromDB(this.iUserID);

            this.tbAddress.Text = accountInfor.address;
            this.tbName.Text = accountInfor.strName;
            this.dtBirthday.Value = accountInfor.birthday;
            this.tbPhone.Text = accountInfor.phoneNumber;
            this.tbEmail.Text = accountInfor.email;
        }

        private void btBack_Click(object sender, EventArgs e)
        {
            this.Owner.Show();
            this.Close();
        }
    }
}


